home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_556 / scheme2c / scheme-src.lzh / scrt / signal.h < prev    next >
C/C++ Source or Header  |  1991-10-11  |  3KB  |  87 lines

  1. /* SCHEME->C */
  2.  
  3. /*              Copyright 1989 Digital Equipment Corporation
  4.  *                         All Rights Reserved
  5.  *
  6.  * Permission to use, copy, and modify this software and its documentation is
  7.  * hereby granted only under the following terms and conditions.  Both the
  8.  * above copyright notice and this permission notice must appear in all copies
  9.  * of the software, derivative works or modified versions, and any portions
  10.  * thereof, and both notices must appear in supporting documentation.
  11.  *
  12.  * Users of this software agree to the terms and conditions set forth herein,
  13.  * and hereby grant back to Digital a non-exclusive, unrestricted, royalty-free
  14.  * right and license under any changes, enhancements or extensions made to the
  15.  * core functions of the software, including but not limited to those affording
  16.  * compatibility with other hardware or software environments, but excluding
  17.  * applications which incorporate this software.  Users further agree to use
  18.  * their best efforts to return to Digital any such changes, enhancements or
  19.  * extensions that they make and inform Digital of noteworthy uses of this
  20.  * software.  Correspondence should be provided to Digital at:
  21.  * 
  22.  *                       Director of Licensing
  23.  *                       Western Research Laboratory
  24.  *                       Digital Equipment Corporation
  25.  *                       100 Hamilton Avenue
  26.  *                       Palo Alto, California  94301  
  27.  * 
  28.  * This software may be distributed (but not offered for sale or transferred
  29.  * for compensation) to third parties, provided such third parties agree to
  30.  * abide by the terms and conditions of this notice.  
  31.  * 
  32.  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
  33.  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  34.  * MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
  35.  * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  36.  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  37.  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  38.  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  39.  * SOFTWARE.
  40. */
  41.  
  42. /* During critical sections in the Scheme system, signals may not be acted
  43.    upon.  As one such critical section is in CONS, a cheap signal masking
  44.    mechanism is required which is implemented as follows.
  45.  
  46.    A critical section is entered by invoking MUTEXON:
  47. */
  48.  
  49. #define MUTEXON  sc_mutex = 1
  50.  
  51. extern int sc_mutex;    /* Mutual exclusion flag */
  52.  
  53. /* The code in the critical section is then executed the section is exited by
  54.    invoking MUTEXOFF:
  55. */
  56.  
  57. #define MUTEXOFF  if (sc_mutex = sc_pendingsignals)  \
  58.              sc_sendpendingsignals()
  59.  
  60. extern int  sc_pendingsignals; 
  61. extern      sc_sendpendingsignals();
  62.  
  63. /* Signals that are caught by a Scheme->C program enter through the following
  64.    procedure.  If the Scheme system is not in a critical section, then the
  65.    user's signal handler will be directly called.  Otherwise, the signal
  66.    will be defered until the critical section is exited.
  67. */
  68.  
  69. extern void  sc_onsignal1();
  70.  
  71. /* During garbage collection, signals are blocked by calling:
  72.  
  73.     sc_gcinprogress( 1 )
  74.  
  75.    at the start of collection, and enabled by calling
  76.  
  77.     sc_gcinprogress( 0 )
  78.  
  79.    at the end of collection.
  80. */
  81.  
  82. extern    sc_gcinprogress();
  83.  
  84. /* Arithmetic traps are enabled by the following function. */
  85.  
  86. extern  sc_mathtraps();
  87.